Saving state of a computer system generally comprises persisting the information stored in the system's Random Access Memory (RAM) to a permanent or semi permanent computer readable medium, such as a hard disk, flash memory, other disk drives, or the like. Additional information, e.g., a processor or other hardware activity log, processor state information and/or other hardware state information, may also be saved as part of saving state. Saving state is also referred to as taking a state “snapshot,” because it records the state of a computer system at a moment in time.
State snapshots are useful in a variety of contexts. For example, if operation of a computer system is paused by a user, or if a computer system “crashes” due to a hardware, software or user error, then saved state information is useful for returning the computer system to a last known “good” state. State snapshots can also be used to recapture data lost due to user or machine error, as well as for troubleshooting and diagnostic purposes.
One familiar example of a state saving feature is the “hibernate” feature available on personal computers running the popular WINDOWS XP® or VISTA® operating systems made by MICROSOFT Corporation of Redmond, Wash. This feature is available from the WINDOWS control panel, as a “power option.” Using this feature, a user may set their computer to hibernate upon command, thereby causing it to save state and shut off power to the processor.
State snapshots are also useful in the realm of so-called “virtual machine” technology, however saving state in this context presents a variety of unique challenges. Virtual machine technology refers to arrangements wherein software, such as a “host” operating system, emulates a hardware environment in which other software, e.g., a “guest” operating system, executes. Saving state of a virtual machine may be expensive in terms of processor time and disk throughput, while such resources may be limited due to ongoing demands of the host and/or other guest software. This is in contrast to hibernation, in that no other demands are being placed on the processor or disk during hibernation.
The increasing importance of virtual machine technologies today warrants improved systems and methods for saving state in the context of virtual machine technologies.